/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package controlador;
import accesoDatos.*;
import java.util.Calendar;
import java.util.Stack;
import java.util.Vector;
import logica.*;
/**
 *
 * @author user
 */
public class ControladorEstudiante{
    String periodoActual;
    DAOEstudiante daoEstu;
    
    public ControladorEstudiante(){
        periodoActual = obtenerPeriodo();
        daoEstu= new DAOEstudiante();
    }
    
    public String insertarEstudiante(String id, String nombre, String telefono, String direccion, String email,
            String prog){
        Estudiante estudiante = new Estudiante(id, nombre, telefono,direccion,email,prog);
        int x = daoEstu.guardarEstudiante(estudiante);
        
        if(x==1) return "Se adiciona el estudiante correctamente";
        
        
        return "No se adiciono correctamente el estudiante";
     
    }
    
    public Estudiante consultarEstudiante(String cod_estudiante){
        Estudiante est = new Estudiante();
         System.out.print("nada");
        est=daoEstu.consultarEstudiante(cod_estudiante);
        return est;
          
    }
    
    public String verificarEstudiante(String user, String passwd){       
        Estudiante estudiante = daoEstu.verificarEstudiante(user, passwd);
        if(estudiante==null) return null;
        return estudiante.getCodigo();
    }
    
    public String matricularAsignatura(String cod_est, String cod_asig){
        
        
        int x = daoEstu.matricularAsignatura(cod_est, cod_asig, periodoActual);
        
        if(x==1){
            DAOAsignatura daoAsig= new DAOAsignatura();
            Asignatura asig = daoAsig.consultarAsignatura(cod_asig);
            
            return "La asignatura " + asig.getCodigo() + "-" + asig.getNombre() + "fue matriculada con exito";
        }
        
        return "No es posible matricular la asignatura";
    }
    
    /*Esta funcion verifica si el estudiante se puede matricular de nuevo, ya sea por su promedio o por repitente de
     * alguna asignatura. Retorna 1 si puede continuar en el posgrado, retorna 2 si no puede continuar por promedio
     * o retorna 3 si no puede continuar por repitente
     */
    public int verificarMatriculaEstudiante(String cod_est){
        
        double promedio = daoEstu.obtenerPromedioAcumulado(cod_est);
        int perdidas = daoEstu.obtenerAsignaturasPerdidas(cod_est);
        if(promedio==-1 || perdidas==-1){
            System.out.println("problemas en promedio o repeticion para verificar matricula prom="+promedio
                    + "perdidas="+perdidas);
            return -1;
        }
        else{
            if(promedio<3.5) return 2;
            else if(perdidas>1) return 3;
        }
        
        return 1;
    }
    
    private String obtenerPeriodo(){
        
        Calendar cal = Calendar.getInstance();
        String periodo;
        int mes = cal.get(Calendar.MONTH);
        int ano = cal.get(Calendar.YEAR);
        
        if(mes<=6) periodo = ano + "-I";
        else periodo = ano + "-II";
        
        return periodo;
    }
    
    public Vector<Estudiante> estudianteMaestria(){
        Vector<Estudiante> reporte = new Vector<Estudiante>(1,1);
        reporte = daoEstu.estudianteMaestria();
        return reporte;
    }
    
   
    
}